home *** CD-ROM | disk | FTP | other *** search
- {$R+}
- {$U+}
- {**********************************************************}
- {** **}
- {** ESPSCORE **}
- {** **}
- {** A unit that saves scores: **}
- {** in a series of records that represent a total **}
- {** record of time, date, elapsed time, color of **}
- {** the screen, type of sound reinforcement, type **}
- {** of visual reinforcement, the placement of the **}
- {** target on the select menu, the target and the **}
- {** current name of the saved file. **}
- {** **}
- {** Copyright 1991 Phil Mosier **}
- {** **}
- {**********************************************************}
- Unit ESPSCORE;
- {****}
- Interface
- Uses Graph,Crt;
- Procedure SAVESCORE(Var WRITE_OK : Boolean;
- D_TARGET:Char;
- D_GUESS:Char;
- D_HIT_MISS:Char;
- D_COLOR_OF_CARD:Char;
- D_SCREEN_DISPLAY1:Char;
- D_SCREEN_DISPLAY2:Char;
- D_SCREEN_DISPLAY3:Char;
- D_SCREEN_DISPLAY4:Char;
- D_SCREEN_DISPLAY5:Char;
- D_REINFORCE_SOUND:Char;
- D_REINFORCE_VISUAL:Char;
- D_STYLE:Char;
- D_CUR_YEAR:Word;
- D_CUR_MONTH:Word;
- D_CUR_DAY:Word;
- D_START_HOUR:Word;
- D_START_MIN:Word;
- D_START_SEC:Word;
- D_ELAPESED_SEC:LongInt;
- D_NAME1: Char;
- D_NAME2: Char;
- D_NAME3: Char;
- D_NAME4: Char;
- D_NAME5: Char;
- D_NAME6: Char;
- D_NAME7: Char;
- D_NAME8: Char);
-
-
- Procedure GETSCORE (Var HITS:Word;
- Var TRIALS :Word;
- Var FOUND_FLAG : Boolean;
- D_NAME1: Char;
- D_NAME2: Char;
- D_NAME3: Char;
- D_NAME4: Char;
- D_NAME5: Char;
- D_NAME6: Char;
- D_NAME7: Char;
- D_NAME8: Char);
-
- Procedure GET_RATIOS(Var HIT_I_1: Word;
- Var HIT_I_2: Word;
- Var HIT_I_3: Word;
- Var HIT_I_4: Word;
- Var HIT_I_5: Word;
- Var HIT_P_1: Word;
- Var HIT_P_2: Word;
- Var HIT_P_3: Word;
- Var HIT_P_4: Word;
- Var HIT_P_5: Word;
- Var TRIAL_I_1: Word;
- Var TRIAL_I_2: Word;
- Var TRIAL_I_3: Word;
- Var TRIAL_I_4: Word;
- Var TRIAL_I_5: Word;
- Var TRIAL_P_1: Word;
- Var TRIAL_P_2: Word;
- Var TRIAL_P_3: Word;
- Var TRIAL_P_4: Word;
- Var TRIAL_P_5: Word;
- Var TIME_SHORT_HIT: Word;
- Var TIME_LONG_HIT: Word;
- Var TIME_SHORT_TRIAL: Word;
- Var TIME_LONG_TRIAL: Word;
- Var FOUND_FLAG : Boolean;
- D_NAME1: Char;
- D_NAME2: Char;
- D_NAME3: Char;
- D_NAME4: Char;
- D_NAME5: Char;
- D_NAME6: Char;
- D_NAME7: Char;
- D_NAME8: Char);
-
-
- Implementation
-
- Procedure SAVESCORE(Var WRITE_OK: Boolean;
- D_TARGET:Char;
- D_GUESS:Char;
- D_HIT_MISS:Char;
- D_COLOR_OF_CARD:Char;
- D_SCREEN_DISPLAY1:Char;
- D_SCREEN_DISPLAY2:Char;
- D_SCREEN_DISPLAY3:Char;
- D_SCREEN_DISPLAY4:Char;
- D_SCREEN_DISPLAY5:Char;
- D_REINFORCE_SOUND:Char;
- D_REINFORCE_VISUAL:Char;
- D_STYLE:Char;
- D_CUR_YEAR:Word;
- D_CUR_MONTH:Word;
- D_CUR_DAY:Word;
- D_START_HOUR:Word;
- D_START_MIN:Word;
- D_START_SEC:Word;
- D_ELAPESED_SEC:LongInt;
- D_NAME1: Char;
- D_NAME2: Char;
- D_NAME3: Char;
- D_NAME4: Char;
- D_NAME5: Char;
- D_NAME6: Char;
- D_NAME7: Char;
- D_NAME8: Char);
-
- {*********************************************************}
- {** **}
- {** SAVE SCORE **}
- {** **}
- {*********************************************************}
- Var GUESS_FILE : Text;
- DAT_GUESS_RECORD : Array[1..43] Of Char;
- DATE_TEMP : String[10];
- TIME_TEMP : String[8];
- ELAPESED_SEC_TEMP : String[5];
- INDEX : Byte;
- YEAR_ST4 : String[4];
- MONTH_ST2 : String[2];
- DAY_ST2 : String[2];
- HOUR_ST2 : String[2];
- MIN_ST2 : String[2];
- SEC_ST2 : String[2];
- IOCODE : Word;
- OKAY_FLAG : Boolean;
- GUESS_FILE_NAME : String[12];
- TEMP_FILE_NAME : String[8];
- TEST : STRING[4];
- Begin
- DAT_GUESS_RECORD[1] := D_TARGET;
- DAT_GUESS_RECORD[2] := D_GUESS;
- DAT_GUESS_RECORD[3] := D_HIT_MISS;
- DAT_GUESS_RECORD[4] := D_COLOR_OF_CARD;
- DAT_GUESS_RECORD[5] := D_SCREEN_DISPLAY1;
- DAT_GUESS_RECORD[6] := D_SCREEN_DISPLAY2;
- DAT_GUESS_RECORD[7] := D_SCREEN_DISPLAY3;
- DAT_GUESS_RECORD[8] := D_SCREEN_DISPLAY4;
- DAT_GUESS_RECORD[9] := D_SCREEN_DISPLAY5;
- DAT_GUESS_RECORD[10] := D_REINFORCE_SOUND;
- DAT_GUESS_RECORD[11] := D_REINFORCE_VISUAL;
- DAT_GUESS_RECORD[12] := D_STYLE;
- Str(D_CUR_YEAR:4,YEAR_ST4);
- Str(D_CUR_MONTH:2,MONTH_ST2);
- Str(D_CUR_DAY:2,DAY_ST2);
- DATE_TEMP := YEAR_ST4+'-'+MONTH_ST2+'-'+DAY_ST2;
- For INDEX := 1 To 10 Do
- DAT_GUESS_RECORD[12 + INDEX] := DATE_TEMP[INDEX];
- Str(D_START_HOUR:2,HOUR_ST2);
- Str(D_START_MIN:2,MIN_ST2);
- Str(D_START_SEC:2,SEC_ST2);
- TIME_TEMP := HOUR_ST2+':'+MIN_ST2+':'+SEC_ST2;
- For INDEX :=1 To 8 Do
- DAT_GUESS_RECORD[22 + INDEX] := TIME_TEMP[INDEX];
- Str(D_ELAPESED_SEC:5,ELAPESED_SEC_TEMP);
- For INDEX := 1 To 5 Do
- DAT_GUESS_RECORD[30 + INDEX] := ELAPESED_SEC_TEMP[INDEX];
- DAT_GUESS_RECORD[36] := D_NAME1;
- DAT_GUESS_RECORD[37] := D_NAME2;
- DAT_GUESS_RECORD[38] := D_NAME3;
- DAT_GUESS_RECORD[39] := D_NAME4;
- DAT_GUESS_RECORD[40] := D_NAME5;
- DAT_GUESS_RECORD[41] := D_NAME6;
- DAT_GUESS_RECORD[42] := D_NAME7;
- DAT_GUESS_RECORD[43] := D_NAME8;
- For INDEX := 36 To 43 Do
- Begin
- If DAT_GUESS_RECORD[INDEX] <> ' ' Then
- Begin
- TEMP_FILE_NAME[INDEX - 35] := DAT_GUESS_RECORD[INDEX];
- TEMP_FILE_NAME[0] := Char(INDEX - 35);
- End { End Of DAT_GUESS_RECORD[INDEX] <> ' ' }
- End; { End Of For INDEX 36 To 43 }
- GUESS_FILE_NAME := TEMP_FILE_NAME+'.ESP';
- {************************************************}
- {** **}
- {** This set of lines could print file **}
- {** instead of writing them to a file **}
- {** **}
- {** ASSIGN (GUESS_FILE,'PRN'); **}
- {** RESET (GUESS_FILE); **}
- {** WRITELN(GUESS_FILE,DAT_GUESS_RECORD); **}
- {************************************************}
- WRITE_OK := True;
- Assign(GUESS_FILE,GUESS_FILE_NAME);
- {$I-}
- RESET(GUESS_FILE);
- IOCODE := IOResult;
- {$I+}
- If IOCODE <> 0 Then
- Begin
- If IOCODE = 2 Then
- Begin
- {$I-}
- ReWrite(GUESS_FILE);
- {$I+}
- IOCODE := IOResult;
- If IOCODE = 0 Then
- Begin
- WriteLn(GUESS_FILE,DAT_GUESS_RECORD);
- Close(GUESS_FILE)
- End
- Else
- Begin
- WRITE_OK := False;
- ClearDevice;
- MoveTo(0,190);
- OutText(' Disk Problems !');
- Sound(440);
- Delay(1000);
- NoSound
- End { If IOCODE <> 0 }
- End {If IOCODE = 2}
- Else
- Begin
- WRITE_OK := False;
- ClearDevice;
- MoveTo(0,190);
- OutText(' Disk Problems !');
- Sound(440);
- Delay(1000);
- NoSound
- End { IOCODE <> 2}
- End
- Else
- Begin
- APPEND(GUESS_FILE);
- WriteLn(GUESS_FILE, DAT_GUESS_RECORD);
- Close(GUESS_FILE)
- End {** If IOCODE = 0 **}
- End; { End of SAVESCORE }
-
- Procedure GETSCORE (Var HITS: Word;
- Var TRIALS: Word;
- Var FOUND_FLAG :Boolean;
- D_NAME1: Char;
- D_NAME2: Char;
- D_NAME3: Char;
- D_NAME4: Char;
- D_NAME5: Char;
- D_NAME6: Char;
- D_NAME7: Char;
- D_NAME8: Char);
- {**************************************}
- {** **}
- {**************************************}
-
- Var STRING8: String[9];
- FILE_NAME: String[12];
- DAT_GUESS_RECORD: String[43];
- INDEX: Byte;
- GUESS_FILE: Text;
- IOCODE: Word;
- TEMP:String[17];
-
- Begin
- FOUND_FLAG := True;
- HITS := 0;
- TRIALS := 0;
- For INDEX := 1 To 43 Do
- DAT_GUESS_RECORD[INDEX] := ' ';
- STRING8[1] := D_NAME1;
- STRING8[2] := D_NAME2;
- STRING8[3] := D_NAME3;
- STRING8[4] := D_NAME4;
- STRING8[5] := D_NAME5;
- STRING8[6] := D_NAME6;
- STRING8[7] := D_NAME7;
- STRING8[8] := D_NAME8;
- INDEX := 1;
- Repeat
- STRING8[0] := Char(INDEX);
- INDEX := INDEX + 1;
- Until ((STRING8[INDEX] = ' ') Or (INDEX > 8));
- FILE_NAME := STRING8+'.ESP';
- Assign(GUESS_FILE,FILE_NAME);
- {$I-}
- Reset(GUESS_FILE);
- {$I+}
- IOCODE := IOResult;
- If IOCODE <> 0 Then
- If IOCODE = 2 Then
- Begin
- ClearDevice;
- MoveTo(0,80);
- OutText(FILE_NAME);
- MoveTo(0,120);
- OutText('File not found');
- Delay(4000);
- FOUND_FLAG := False;
- End { End If iocode = 2 }
- Else
- Begin
- ClearDevice;
- MoveTo(0,190);
- OutText(' Disk Problems !');
- Sound(440);
- Delay(1000);
- NoSound;
- Halt(0);
- End
- Else
- Begin { If IOCODE = 0 }
- While Not Eof(GUESS_FILE) Do
- Begin
- ReadLn(GUESS_FILE,DAT_GUESS_RECORD);
- If DAT_GUESS_RECORD[3] = 'H' Then
- HITS := HITS + 1;
- TRIALS := TRIALS + 1;
- End; { While Not EOF }
- Close(GUESS_FILE);
- End; { If IOCODE = 0 }
- End; { End of GETSCORE }
-
- Procedure GET_RATIOS(Var HIT_I_1: Word;
- Var HIT_I_2: Word;
- Var HIT_I_3: Word;
- Var HIT_I_4: Word;
- Var HIT_I_5: Word;
- Var HIT_P_1: Word;
- Var HIT_P_2: Word;
- Var HIT_P_3: Word;
- Var HIT_P_4: Word;
- Var HIT_P_5: Word;
- Var TRIAL_I_1: Word;
- Var TRIAL_I_2: Word;
- Var TRIAL_I_3: Word;
- Var TRIAL_I_4: Word;
- Var TRIAL_I_5: Word;
- Var TRIAL_P_1: Word;
- Var TRIAL_P_2: Word;
- Var TRIAL_P_3: Word;
- Var TRIAL_P_4: Word;
- Var TRIAL_P_5: Word;
- Var TIME_SHORT_HIT: Word;
- Var TIME_LONG_HIT: Word;
- Var TIME_SHORT_TRIAL: Word;
- Var TIME_LONG_TRIAL: Word;
- Var FOUND_FLAG : Boolean;
- D_NAME1: Char;
- D_NAME2: Char;
- D_NAME3: Char;
- D_NAME4: Char;
- D_NAME5: Char;
- D_NAME6: Char;
- D_NAME7: Char;
- D_NAME8: Char);
-
- {**************************************}
- {** **}
- {**************************************}
-
- Var STRING5: String[5];
- STRING8: String[9];
- FILE_NAME: String[12];
- DAT_GUESS_RECORD: String[43];
- INDEX: Byte;
- STRING_INDEX: Word;
- GUESS_FILE: Text;
- IOCode: Word;
- THIS_ELAPSED_SEC : Real;
- TOTAL_SEC : Real;
- CODE : Integer;
- REC_COUNT : Word;
- AVER_SEC : Real;
- Begin
- FOUND_FLAG := True;
- HIT_I_1:= 0;
- HIT_I_2:= 0;
- HIT_I_3:= 0;
- HIT_I_4:= 0;
- HIT_I_5:= 0;
- HIT_P_1:= 0;
- HIT_P_2:= 0;
- HIT_P_3:= 0;
- HIT_P_4:= 0;
- HIT_P_5:= 0;
- TRIAL_I_1:= 0;
- TRIAL_I_2:= 0;
- TRIAL_I_3:= 0;
- TRIAL_I_4:= 0;
- TRIAL_I_5:= 0;
- TRIAL_P_1:= 0;
- TRIAL_P_2:= 0;
- TRIAL_P_3:= 0;
- TRIAL_P_4:= 0;
- TRIAL_P_5:= 0;
- TOTAL_SEC := 0;
- TIME_SHORT_HIT:= 0;
- TIME_LONG_HIT:= 0;
- TIME_SHORT_TRIAL:= 0;
- TIME_LONG_TRIAL:= 0;
- REC_COUNT := 0;
- For INDEX := 1 To 43 Do
- DAT_GUESS_RECORD[INDEX] := ' ';
- STRING8[1] := D_NAME1;
- STRING8[2] := D_NAME2;
- STRING8[3] := D_NAME3;
- STRING8[4] := D_NAME4;
- STRING8[5] := D_NAME5;
- STRING8[6] := D_NAME6;
- STRING8[7] := D_NAME7;
- STRING8[8] := D_NAME8;
- INDEX := 1;
- Repeat
- STRING8[0] := Char(INDEX);
- INDEX := INDEX + 1;
- Until ((STRING8[INDEX] = ' ') Or (INDEX > 8));
- FILE_NAME := STRING8+'.ESP';
- Assign(GUESS_FILE,FILE_NAME);
- {$I-}
- Reset(GUESS_FILE);
- {$I+}
- IOCODE := IOResult;
- If IOCODE <> 0 Then
- If IOCODE = 2 Then
- Begin
- ClearDevice;
- MoveTo(0,80);
- OutText(FILE_NAME);
- MoveTo(0,90);
- OutText('File not found');
- Delay(4000);
- FOUND_FLAG := False;
- End { End If IOCode = 2 }
- Else
- Begin
- ClearDevice;
- MoveTo(0,80);
- OutText('Disk problems!');
- MoveTo(0,100);
- OutText(STRING5);
- Delay(4000);
- FOUND_FLAG := False;
- Halt(0);
- End
- Else
- Begin
- While Not Eof(GUESS_FILE) Do
- Begin
- ReadLn(GUESS_FILE,DAT_GUESS_RECORD);
- {*********************************************************}
- {** DAT_GUESS_RECORD[1] -- Target **}
- {** DAT_GUESS_RECORD[3] -- Hit/Miss **}
- {*********************************************************}
-
- If ((DAT_GUESS_RECORD[Ord(DAT_GUESS_RECORD[1]) - 44] = '1') And
- (DAT_GUESS_RECORD[3] = 'H')) Then
- HIT_I_1 := HIT_I_1 + 1;
- If ((DAT_GUESS_RECORD[Ord(DAT_GUESS_RECORD[1]) - 44] = '2') And
- (DAT_GUESS_RECORD[3] = 'H')) Then
- HIT_I_2 := HIT_I_2 + 1;
- If ((DAT_GUESS_RECORD[Ord(DAT_GUESS_RECORD[1]) - 44] = '3') And
- (DAT_GUESS_RECORD[3] = 'H')) Then
- HIT_I_3 := HIT_I_3 + 1;
- If ((DAT_GUESS_RECORD[Ord(DAT_GUESS_RECORD[1]) - 44] = '4') And
- (DAT_GUESS_RECORD[3] = 'H')) Then
- HIT_I_4 := HIT_I_4 + 1;
- If ((DAT_GUESS_RECORD[Ord(DAT_GUESS_RECORD[1]) - 44] = '5') And
- (DAT_GUESS_RECORD[3] = 'H')) Then
- HIT_I_5 := HIT_I_5 + 1;
- {*********************************************************}
- {** DAT_GUESS_RECORD[2] -- Place you choose **}
- {** DAT_GUESS_RECORD[3] -- Hit/Miss **}
- {*********************************************************}
-
- If ((DAT_GUESS_RECORD[2] = '1') And
- (DAT_GUESS_RECORD[3] = 'H')) Then
- HIT_P_1 := HIT_P_1 + 1;
- If ((DAT_GUESS_RECORD[2] = '2') And
- (DAT_GUESS_RECORD[3] = 'H')) Then
- HIT_P_2 := HIT_P_2 + 1;
- If ((DAT_GUESS_RECORD[2] = '3') And
- (DAT_GUESS_RECORD[3] = 'H')) Then
- HIT_P_3 := HIT_P_3 + 1;
- If ((DAT_GUESS_RECORD[2] = '4') And
- (DAT_GUESS_RECORD[3] = 'H')) Then
- HIT_P_4 := HIT_P_4 + 1;
- If ((DAT_GUESS_RECORD[2] = '5') And
- (DAT_GUESS_RECORD[3] = 'H')) Then
- HIT_P_5 := HIT_P_5 + 1;
-
- {*********************************************************}
- {** DAT_GUESS_RECORD[2] -- Place you choose **}
- {** DAT_GUESS_RECORD[Ord( " ) - 44] **}
- {** -- Image you choose **}
- {*********************************************************}
- If DAT_GUESS_RECORD[Ord(DAT_GUESS_RECORD[2]) - 44]
- = '1' Then TRIAL_I_1 := TRIAL_I_1 + 1;
- If DAT_GUESS_RECORD[Ord(DAT_GUESS_RECORD[2]) - 44]
- = '2' Then TRIAL_I_2 := TRIAL_I_2 + 1;
- If DAT_GUESS_RECORD[Ord(DAT_GUESS_RECORD[2]) - 44]
- = '3' Then TRIAL_I_3 := TRIAL_I_3 + 1;
- If DAT_GUESS_RECORD[Ord(DAT_GUESS_RECORD[2]) - 44]
- = '4' Then TRIAL_I_4 := TRIAL_I_4 + 1;
- If DAT_GUESS_RECORD[Ord(DAT_GUESS_RECORD[2]) - 44]
- = '5' Then TRIAL_I_5 := TRIAL_I_5 + 1;
- {*********************************************************}
- {** DAT_GUESS_RECORD[2] -- Place you choose **}
- {*********************************************************}
- If DAT_GUESS_RECORD[2] = '1' Then
- TRIAL_P_1 := TRIAL_P_1 + 1;
-
- If DAT_GUESS_RECORD[2] = '2' Then
- TRIAL_P_2 := TRIAL_P_2 + 1;
-
- If DAT_GUESS_RECORD[2] = '3' Then
- TRIAL_P_3 := TRIAL_P_3 + 1;
-
- If DAT_GUESS_RECORD[2] = '4' Then
- TRIAL_P_4 := TRIAL_P_4 + 1;
-
- If DAT_GUESS_RECORD[2] = '5' Then
- TRIAL_P_5 := TRIAL_P_5 + 1;
- STRING_INDEX :=0;
- For INDEX := 1 To 5 Do
- Begin
- If DAT_GUESS_RECORD[30 + INDEX] <> ' ' Then
- Begin
- STRING_INDEX := STRING_INDEX + 1;
- STRING5[STRING_INDEX] := DAT_GUESS_RECORD[30 + INDEX];
- End
- End;
- STRING5[0] := Char(STRING_INDEX);
- Val(STRING5,THIS_ELAPSED_SEC,CODE);
- TOTAL_SEC := TOTAL_SEC + THIS_ELAPSED_SEC;
- REC_COUNT := REC_COUNT + 1;
- AVER_SEC := TOTAL_SEC / REC_COUNT;
- AVER_SEC := AVER_SEC / 2;
- End; { while not eof }
- Assign(GUESS_FILE,FILE_NAME);
- Reset(GUESS_FILE);
- While Not Eof(GUESS_FILE) Do
- Begin
- ReadLn(GUESS_FILE,DAT_GUESS_RECORD);
- STRING_INDEX :=0;
- For INDEX := 1 To 5 Do
- Begin
- If DAT_GUESS_RECORD[30 + INDEX] <> ' ' Then
- Begin
- STRING_INDEX := STRING_INDEX + 1;
- STRING5[STRING_INDEX] := DAT_GUESS_RECORD[30 + INDEX];
- End
- End;
- STRING5[0] := Char(STRING_INDEX);
- Val(STRING5,THIS_ELAPSED_SEC,CODE);
- If ((DAT_GUESS_RECORD[3] = 'H') And
- (AVER_SEC >= THIS_ELAPSED_SEC)) Then
- TIME_SHORT_HIT := TIME_SHORT_HIT + 1;
- If (AVER_SEC >= THIS_ELAPSED_SEC) Then
- TIME_SHORT_TRIAL := TIME_SHORT_TRIAL + 1;
- If ((DAT_GUESS_RECORD[3] = 'H') And
- (AVER_SEC < THIS_ELAPSED_SEC)) Then
- TIME_LONG_HIT := TIME_LONG_HIT + 1;
- If (AVER_SEC < THIS_ELAPSED_SEC) Then
- TIME_LONG_TRIAL := TIME_LONG_TRIAL + 1;
- End; { while not EOF }
- End; { IOCODE = 0 }
- Close(GUESS_FILE);
-
-
- End; { End of GET_RATIOS }
-
- End. { End of ESPSCORE }